<?php

namespace App\Repositories;

use App\Models\Config;
use App\Models\Wechat;
use EasyWeChat\Foundation\Application;
use InfyOm\Generator\Common\BaseRepository;

/**
 * Class ConfigRepository
 * @package App\Repositories
 * @version September 12, 2017, 2:00 pm UTC
 *
 * @method Config findWithoutFail($id, $columns = ['*'])
 * @method Config find($id, $columns = ['*'])
 * @method Config first($columns = ['*'])
*/
class ConfigRepository extends BaseRepository
{
    public $app;
    public $server;
    public $userService;
    public $easyOptions;
    public $shop = null;
    public $qrcode = null;
    /**
     * @var array
     */
    protected $fieldSearchable = [
        'group',
        'type',
        'value',
        'title'
    ];

    /**
     * Configure the Model
     **/
    public function model()
    {
        return Config::class;
    }

    public function getWechatConfig($wechat_id)
    {
        $configs = [
            /**
             * Debug 模式，bool 值：true/false
             *
             * 当值为 false 时，所有的日志都不会记录
             */
            'debug'  => true,
            /**
             * 账号基本信息，请从微信公众平台/开放平台获取
             */
            'app_id'  => 'wxf75256ab7b42cc66',         // AppID
            'secret'  => '270561d3e2d02b953d64618e47f919b1',     // AppSecret
            'token'   => 'asasas',          // Token
            'aes_key' => '25WqrFXTyuARa6LvEVHcpClbLRNLUYhCwoh7T59B7Fq',                    // EncodingAESKey，安全模式下请一定要填写！！！
            /**
             * 日志配置
             *
             * level: 日志级别, 可选为：
             *         debug/info/notice/warning/error/critical/alert/emergency
             * permission：日志文件权限(可选)，默认为null（若为null值,monolog会取0644）
             * file：日志文件位置(绝对路径!!!)，要求可写权限
             */
            'log' => [
                'level'      => 'debug',
                'permission' => 0777,
                'file'       => '/tmp/easywechat.log',
            ],
            /**
             * OAuth 配置
             *
             * scopes：公众平台（snsapi_userinfo / snsapi_base），开放平台：snsapi_login
             * callback：OAuth授权完成后的回调页地址
             */
            'oauth' => [
                'scopes'   => ['snsapi_userinfo'],
                'callback' => '/examples/oauth_callback.php',
            ],
            /**
             * 微信支付
             */
            'payment' => [
                'merchant_id'        => 'your-mch-id',
                'key'                => 'key-for-signature',
                'cert_path'          => 'path/to/your/cert.pem', // XXX: 绝对路径！！！！
                'key_path'           => 'path/to/your/key',      // XXX: 绝对路径！！！！
                // 'device_info'     => '013467007045764',
                // 'sub_app_id'      => '',
                // 'sub_merchant_id' => '',
                // ...
            ],
            /**
             * Guzzle 全局设置
             *
             * 更多请参考： http://docs.guzzlephp.org/en/latest/request-options.html
             */
            'guzzle' => [
                'timeout' => 3.0, // 超时时间（秒）
                //'verify' => false, // 关掉 SSL 认证（强烈不建议！！！）
            ],
        ];
        if($wechat_id){
            $wechat = Wechat::find($wechat_id);
        }
        if(isset($wechat)){
            $configs['app_id'] = $wechat->app_id;
            $configs['secret'] = $wechat->secret;
            $configs['token'] = $wechat->secret;
            $configs['aes_key'] = $wechat->secret;
        }
        $this->easyOptions = $configs;
        $this->app = new Application($this->easyOptions);

        $this->server = $this->app->server;

        $this->userService = $this->app->user;
    }
}
